package com.zlsy.learning.leetcode.dahuashujujiegou.linklist;

import com.zlsy.learning.leetcode.linkedlist.l234.ListNode;

/**
 * @author zhouliang
 * @date 2020/8/8 9:54
 */
public class ListInsert {

  /**
   * 初始条件：顺序线性表listNode已经存在，1<=1<=ListLength(L) 操作结果：在L中第i个结点位置之前插入新的数据元素e，L的长度增加1
   *
   * @param listNode 原始链表
   * @param i 第i个元素的值
   * @param s 用data返回
   * @return ListNode
   */
  private static ListNode listInsert(ListNode listNode, int i, ListNode s) {
    int j = 1;
    ListNode pcur = listNode;
    while (pcur != null) {
      // 如果此时已经循环到第i个节点之前，我们直接退出。
      if (j == i - 1) {
        break;
      }
      pcur = pcur.next;
      j++;
    }
    if (pcur == null) {
      return null;
    }
    s.next = pcur.next;
    pcur.next = s;
    return listNode;
  }

  public static void main(String[] args) {
    ListNode listNode = new ListNode(1);
    listNode.add(2);
    listNode.add(3);
    listNode.add(4);

    ListNode s = new ListNode(88);

    ListNode real = listInsert(listNode, 3, s);
    if (real != null) {
      real.print();
    } else {
      System.out.println("未找到");
    }
  }
}
